GUIDE TO (mostly) HARMLESS HACKING

 

Beginners' Series Number 7

 

The Exploit Files

____________________________________________________________

 

by [email protected] and Carolyn Meinel

 

How many times have you read hacker newsgroups or email lists and seen posts

that begged "teach me to hack," or asked "how do I hack this"? It often

looks as though the person asking the question just doesn't understand the

basics of vulnerabilities and their exploits. The purpose of this Guide is

to explain what vulnerabilities and exploits are, and how they relate to

computer security.

 

Let's start with an example. Suppose that you are trying to sell something

by phone. So you start by calling phone numbers, and you keep calling until

you get someone to answer, not an answering machine, but a real live person.

Then if the person who answers the phone speaks the same language as you and

can understand you, you try to sell your product. Lots of people will hang

up on you, but eventually, someone will buy something...bang! You've scored!

 

*****************************************************************

In this Guide you will learn:

 

* What is a vulnerability

* What is an exploit

* How to look for vulnerabilities

*****************************************************************

 

So what does this have to do with 'hacking'? Look at your dialing of phone

numbers as port scanning IP (Internet protocol) addresses on the Internet.

Some Internet host computers won't answer. Maybe a firewall is blocking the

ports that you're scanning. Some hosts will answer, and at that point

maybe, just maybe, you've found a vulnerable computer.

 

********************************************************************

Newbie note: What are these 'ports' we are talking about? This kind of

'port' is a number used to identify a service on an Internet host. For

this reason they are often called 'TCP/IP' (transfer control

protocol/Internet protocol) ports, to distinguish them from other kinds of

computer ports such as modems, ports to printers, etc. Each host computer

connected to the Internet is identified by an IP address such as

'victim.fooisp.com.' Since each host may have many services running, each

service uses a different port. To contact any of these ports across the

Internet, you use the host's IP address and port number -- it's kind of like

dialing a phone number.

********************************************************************

 

Now maybe you have connected to telnet, port 23. You get a login prompt,

but you don't know any valid username/password combinations. So the host

"hangs up" on you. After many hours of trying, you connect to a host on the

right port, and Shazam!! You're greeted with a login prompt, and you quickly

guess a valid username and password combination. The next thing you know,

you have a command prompt. You have discovered a vulnerability -- an easily

guessed password! So being the 'white hat hacker' that you are, you send an

email to the sysadmin of the site and leave quietly.

 

*****************************************************************

Newbie note: A 'host' is a computer connected to the Internet. A 'service'

is a program that is running on a port of an Internet host. Each service is

a program that will respond to certain commands. If you give it the right

command, you will get it to do something for you.

 

The simplest example of a service is 'chargen', or character generator (port

the chargen service, this program will react to this connection by sending a

string of characters which you will see being repeated across your telnet

screen. All you need to do is connect to the service.

 

Another example of a service is finger (port 79). If you run a finger

program to request information on a particular user from a specific host,

and the finger service (or 'fingerd') is running, and if the user has not

instructed the finger service to ignore requests about him or her, you will

get back information on that user.

*****************************************************************

 

What services are run from these ports, and how can we learn more about

them? Ports numbered from 1 to 1024 are called the 'well-known' ports.

These are listed in RFC 1700 (see

http://www.internetnorth.com.au/keith/networking/rfc.html). Many of the

well-known ports are also listed in a file on your computer called

'services'. On Win95, it's c:\windows\services; on NT, it's

c:\winnt\system32\drivers\etc\services; on many Unix type computers (your

shell account) it's /etc/services.

 

These ports are called 'well-known' because they are commonly used by

certain services. For example, the well-known port for sending email is the

SMTP port, or port 25. Because it is 'well-known', anyone can send email to

anyone else. Because port 110 is the well-known port for checking email,

all email clients know that they have to connect to a POP server on port 110

in order to retrieve email.

 

An excellent FAQ (frequently asked questions) on TCP/IP ports can be found

at http://www.technotronic.com/tcpudp.html

 

*************************************************************

You can get punched in the nose warning: There are many port scanning

tools, and wannabe hackers use them ... a lot. But for what purpose? In

most cases all that happens is that a sysadmin or firewall administrator

goes through the logs that computer keeps of who has tried to hack that

site. He or she then decides whether to ignore your scan or call the

sysadmin of the site that your scan came from. Even though (in the US at

least) port scanning is legal, it makes systems administrators really mad at

you! To avoid getting kicked off your Internet provider, get permission to

scan first!

*************************************************************

 

What Is a Vulnerability?

 

A 'vulnerability' is anything about a computer system that will allow

someone to either keep it from operating correctly, or that will let

unauthorized people take it over. There are many types of vulnerabilities.

They may be a misconfiguration in the setup of a service, or a flaw in the

programming of the service.

 

An example of a setup misconfiguration is leaving the 'wiz' or 'debug'

commands operational in older versions of sendmail, or incorrectly setting

directory permissions on your FTP server so people can download the password

file. In these cases, the vulnerability is not how the program was written,

but with how the program is configured. Allowing file sharing on your

Windows 95 or 98 computer when it is not necessary, or failing to put a

password on file sharing, is another example.

 

Examples of errors in the programming of services are the large number of

buffer overflow vulnerabilities in the programs that run services on port of

Internet host computers. Many of these buffer overflow problems allow

people to use the Internet to break into and take control of host computers

(check out "Smashing the Stack", by Aleph One, at:

http://www.happyhacker.org/docs/smash.txt).

 

What Is an Exploit?

 

An 'exploit' is a program or technique that takes advantage of a

vulnerability. For example, the FTP-Bounce vulnerability occurs when an FTP

server (used to allow people to upload and download files) is configured to

redirect FTP connections to other computers. There really is no good reason

to allow this feature. It has become a vulnerability because this 'bounce'

feature allows someone to use it to port scan other computers on the same

local area network (LAN) as that FTP server. So even though a firewall may

be keeping port scanners form directly scanning other computers on this LAN,

the FTP server would bounce a scan past the firewall.

 

So really an exploit is any technique that takes advantage of a

vulnerability to enable you to carry out your own schemes, despite the

wishes of the sysadmin of your target. Exploits depend on operating systems

and their configurations, the configurations of programs running on computer

systems, and of the LAN they are on.

 

Operating systems such as NT, VMS and Unix are very different, and the

various versions of Unix have their differences, as well. (Examples of Unix

operating systems include BSD, AIX, SCO, Irix, Sun OS, Solaris, and Linux).

Even the various versions of the Linux form of Unix are different.

 

This means exploits that will work against NT systems will probably not work

against Unix systems, and exploits for Unix systems will probably not work

against NT. NT services are run by different programs from what you may find

on Unix type computers. Further, different versions of the same service

running on any particular operating system will probably not be vulnerable

to the same exploit, because each version of a service is run by a

different program. Sometimes this different program may have the same name

but only have a different version number. For example sendmail 8.9.1a is

different from 8.8.2. Many of the differences are that 8.9.1a has been

fixed so that none of the old sendmail exploit programs will work on it.

 

For example, the "Leshka" exploit explained in the GTMHH on advanced shell

programming clearly explains that it only works on versions 8.7-8.8.2 of the

SMTP service program called 'sendmail.' We observed a number of people who

were playing the hacker wargame trying to run the Leshka exploit against a

later, fixed version of sendmail.

 

So remember, an exploit for one operating system or service is unlikely to

work against another operating system. This isn't to say that it definitely

won't...it's just not likely. However, you are pretty much guaranteed that

any Win95 or NT exploit will not work against any kind of Unix.

 

How to Look for Vulnerabilities

 

Now let's start someplace where you are unlikely to get punched in the nose

by looking at some ports on your own computer. You can do this by typing

'netstat -a' at the command prompt.

 

You should see something such as:

 

Active Connections

 

Proto Local Address Foreign Address State

TCP localhost:1027 0.0.0.0:0 LISTENING

TCP localhost:135 0.0.0.0:0 LISTENING

TCP localhost:135 0.0.0.0:0 LISTENING

TCP localhost:1026 0.0.0.0:0 LISTENING

TCP localhost:1026 localhost:1027 ESTABLISHED

TCP localhost:1027 localhost:1026 ESTABLISHED

TCP localhost:137 0.0.0.0:0 LISTENING

TCP localhost:138 0.0.0.0:0 LISTENING

TCP localhost:nbsession 0.0.0.0:0 LISTENING

UDP localhost:135 *:*

UDP localhost:nbname *:*

UDP localhost:nbdatagram *:*

 

Hhhmm...nothing much going on here. The 'Local Address' (ie, my local

machine) seem to be listening on ports 135, 137, 138, and 'nbsession' (which

translates to port 139...type 'netstat -an' to see just the port numbers,

not the names of the ports). This is okay...those ports are part of

Microsoft networking, and need to be active on the LAN my machine is

connected to.

 

Now we connect our Web browser to http://www.happyhacker.org and at the same

time run Windows telnet and connect to a shell account at example.com.

Let's see what happens. Here's the output of the 'netstat -a' command,

slightly abbreviated:

 

Active Connections

 

Proto Local Address Foreign Address State

TCP localhost:1027 0.0.0.0:0 LISTENING

TCP localhost:135 0.0.0.0:0 LISTENING

TCP localhost:135 0.0.0.0:0 LISTENING

TCP localhost:2508 0.0.0.0:0 LISTENING

TCP localhost:2509 0.0.0.0:0 LISTENING

TCP localhost:2510 0.0.0.0:0 LISTENING

TCP localhost:2511 0.0.0.0:0 LISTENING

TCP localhost:2514 0.0.0.0:0 LISTENING

TCP localhost:1026 0.0.0.0:0 LISTENING

TCP localhost:1026 localhost:1027 ESTABLISHED

TCP localhost:1027 localhost:1026 ESTABLISHED

TCP localhost:137 0.0.0.0:0 LISTENING

TCP localhost:138 0.0.0.0:0 LISTENING

TCP localhost:139 0.0.0.0:0 LISTENING

TCP localhost:2508 zlliks.505.ORG:80 ESTABLISHED

TCP localhost:2509 zlliks.505.ORG:80 ESTABLISHED

TCP localhost:2510 zlliks.505.ORG:80 ESTABLISHED

TCP localhost:2511 zlliks.505.ORG:80 ESTABLISHED

TCP localhost:2514 example.com:telnet ESTABLISHED

 

So what do we see now? Well, there are the ports listening for Microsoft

networking, just like in the first example. And there also are some new

ports listed. Four are connected to 'zlliks.505.org' on port 80, and one to

'example.com' on the telnet port. These correspond to the client

connections that I set up. See, this way you know the name of the computer

that was running the happy Hacker Web site at this time.

 

But what is with the really high port numbers? Well, remember the

'well-known' ports that we talked about above? Client applications, such as

browsers and telnet clients (clients are programs that connect to servers)

need to use a port to receive data on, so they randomly select ports from

outside the 'well-known' port range...above 1024. In this case, my browser

has opened up four ports...2508 through 2511.

 

Now suppose you want to scan your friend's ports. This is the best way to

scan, as you won't have to worry about your friend getting you kicked off

your ISP for suspicion of trying to break into computers. How do you know

what your friend's IP ad dress is? Ask him or her to run the command (from

the DOS prompt) 'netstat -r'. This shows something like this:

 

C:\WINDOWS>netstat -r

 

Route Table

 

Active Routes:

 

Network Address Netmask Gateway Address Interface Metric

 

Active Connections

 

Proto Local Address Foreign Address State

TCP lovely-lady:1093 mack.foo66.com:smtp ESTABLISHED

 

That 'gateway address' and 'interface' both give the current IP address of

your computer. If you are on a LAN, the gateway should be different from

your own computer's IP address. If you or your friend are on a LAN,

however, you should think twice before port scanning each other, or the

LAN's sysadmin may notice your activity. Warning, sysadmins have quite an

arsenal of larts to use on suspicious-acting users.

 

************************************************************

Newbie note: Lart? What the heck is a lart? It is a "luser attitude

readjustment tool." This is a generic class of techniques used by sysadmins

to punish lusers. What is a luser? A wayward user. To get a sampling of

popular larts, see http://mrjolly.cc.waikato.ac.nz. You want your sysadmins

to be your FRIENDS, right? Never forget this!

************************************************************

 

What are some of the vulnerabilities to win95 and NT, you ask? Check

previous GTMHHs for this information. Perhaps the most important thing to

remember about Windows is equal to root in Unix), can run a program that

uses any port it wants, even a well-known port. This vulnerability is

demonstrated by a program from Weld Pond of L0pht fame called 'netcat'. The

program can be obtained from:

 

http://www.l0pht.com/~weld/netcat

 

Read the documentation that ships with the program, or the Guides on (a)

win95 and telnet from:

 

http://www.happyhacker.org/gtmhh.shtml

 

or (b) NT security from:

 

http://www.infowar.com/hacker/hacker.html-ssi

 

...for information on uses of netcat.

 

Of course, various Windows applications, such as Internet Explorer, have

their own vulnerabilities.

 

By now, you're probably wondering where you can learn more about various

vulnerabilities and exploits for just about any computer you might find on

the Internet. Here is a list of sites:

 

ISS X-Force

http://www.iss.net/xforce

 

RootShell

http://www.rootshell.com

 

TechnoTronic

http://www.technotronic.com

 

Packet Storm Security Site

http://www.Genocide2600.com/~tattooman/index.shtml

 

Bugtraq archives:

http://www.netspace.org/lsv-archive/bugtraq.html

 

NTBugTraq

http://www.ntbugtraq.com

 

Aelita Software

http://www.ntsecurity.com

**This site has the RedButton program, which demonstrates the capability to

connect to an NT machine via a null session and retrieve registry

information. This is a relatively simple problem to fix...see the NT

security Guides at: http://www.infowar.com/hacker/hacker.html-ssi

 

NTSecurity

http://www.ntsecurity.net

 

Active Matrix's HideAway

http://www.hideaway.net/exploits.html

 

CERT

http://www.cert.org

 

________________________________________________________

Where are those back issues of GTMHHs and Happy Hacker Digests? Check out

the official Happy Hacker Web page at http://www.happyhacker.org.

We are against computer crime. We support good, old-fashioned hacking of the

kind that led to the creation of the Internet and a new era of freedom of

information. But we hate computer crime. So don't email us about any crimes

you may have committed!

To subscribe to Happy Hacker and receive the Guides to (mostly) Harmless

Hacking, please email [email protected] with message "subscribe

happy-hacker" in the body of your message.

Copyright 1998 keydet89 and Carolyn Meinel. You may forward, print out or

post this GUIDE TO (mostly) HARMLESS HACKING on your Web site as long as you

leavethis notice at the end.

_________________________________________________________

Carolyn Meinel

M/B Research -- The Technology Brokers

http://techbroker.com

_________________________________________________________________________

The Next Page -

Firestarter Homepage

The Previous Page - Computer hacking. Where did it begin and how did it grow?